package controller

import (
	"CampusCloudAid/logic"
	"net/http"
	"strconv"

	"go.uber.org/zap"

	"github.com/gin-gonic/gin"
)

var CompletionImage string

// UploadCompletionImages 上传任务完成图片
// @Summary 上传任务完成图片
// @Description 上传任务完成图片，并将图片保存到服务器
// @Accept multipart/form-data
// @Param taskId formData int true "任务ID"
// @Param images formData file true "要上传的图片文件列表"
// @Security ApiKeyAuth
// @Success 200 {object} ResponseData
// @Router /api/v1/upload [post]
func UploadCompletionImages(ctx *gin.Context) {
	// 获取任务ID
	taskIdStr := ctx.PostForm("taskId")
	taskId, err := strconv.ParseInt(taskIdStr, 10, 64)
	if err != nil {
		ctx.JSON(http.StatusBadRequest, gin.H{"error": "Invalid task ID"})
		return
	}
	//userId, err := jwt.GetUserId(ctx)
	// 解析上传的多个文件
	files, err := ctx.MultipartForm()
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to parse files"})
		return
	}

	// 获取文件列表
	fileHeaders := files.File["images"]

	// 保存多个图片并获取路径
	imagePaths, err := logic.SaveCompletionImages(taskId, fileHeaders) // 保存到服务器并将图片变为json格式；
	if err != nil {
		ctx.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save images"})
		return
	}
	if err = logic.UpdateTaskImage(taskId, imagePaths); err != nil { //
		zap.L().Error("更新任务凭证失败：", zap.Error(err))
		ResponseError(ctx, CodeServerBusy)
		return
	}

	ResponseSuccess(ctx, string(imagePaths))
	// 返回成功响应，包含保存的图片路径
	//ctx.JSON(http.StatusOK, )
}

//func Upload(ctx *gin.Context) {
//	//userId, err := jwt.GetUserId(ctx)
//	//taskIdStr:=ctx.PostForm("taskId")
//	file, err := ctx.FormFile("file")
//	if err != nil {
//		ResponseError(ctx, CodeFileLoadError)
//		return
//	}
//	//fileName := path.Ext(file.Filename)  //文件的后缀名
//	filePath := fmt.Sprintf("%s", settings.Conf.UploadDir)
//	uploadTool.CreateDir(filePath)
//	filename := fmt.Sprintf("%s%s%s%s%s",
//		fmt.Sprintf("%04d", time.Now().Year()),
//		fmt.Sprintf("%02d", time.Now().Month()),
//		fmt.Sprintf("%02d", time.Now().Day()),
//		fmt.Sprintf("%02d", time.Now().Second()),
//		file.Filename)
//	uploadTool.CreateDir(filePath)
//	CompletionImage = filePath + "/" + filename
//	//CompletionImage = filePath + "/" + file.Filename
//	err = ctx.SaveUploadedFile(file, CompletionImage)
//	if err != nil {
//		log.Println("ctx.SaveUploadedFile(file, fullPath) failed---", err)
//		return
//	}
//	ResponseSuccess(ctx, CompletionImage)
//}
